{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\n",
    "# Animated 3D random walk\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\97658\\AppData\\Local\\Programs\\Python\\Python38\\lib\\site-packages\\matplotlib\\animation.py:889: UserWarning: Animation was deleted without rendering anything. This is most likely not intended. To prevent deletion, assign the Animation to a variable, e.g. `anim`, that exists until you have outputted the Animation using `plt.show()` or `anim.save()`.\n",
      "  warnings.warn(\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import matplotlib.animation as animation\n",
    "\n",
    "# Fixing random state for reproducibility\n",
    "np.random.seed(19680801)\n",
    "\n",
    "\n",
    "def random_walk(num_steps, max_step=0.05):\n",
    "    \"\"\"Return a 3D random walk as (num_steps, 3) array.\"\"\"\n",
    "    start_pos = np.random.random(3)\n",
    "    steps = np.random.uniform(-max_step, max_step, size=(num_steps, 3))\n",
    "    walk = start_pos + np.cumsum(steps, axis=0)\n",
    "    return walk\n",
    "\n",
    "\n",
    "def update_lines(num, walks, lines):\n",
    "    for line, walk in zip(lines, walks):\n",
    "        # NOTE: there is no .set_data() for 3 dim data...\n",
    "        line.set_data(walk[:num, :2].T)\n",
    "        line.set_3d_properties(walk[:num, 2])\n",
    "    return lines\n",
    "\n",
    "\n",
    "# Data: 40 random walks as (num_steps, 3) arrays\n",
    "num_steps = 30\n",
    "walks = [random_walk(num_steps) for index in range(40)]\n",
    "\n",
    "# Attaching 3D axis to the figure\n",
    "fig = plt.figure()\n",
    "ax = fig.add_subplot(projection=\"3d\")\n",
    "\n",
    "# Create lines initially without data\n",
    "lines = [ax.plot([], [], [])[0] for _ in walks]\n",
    "\n",
    "# Setting the axes properties\n",
    "ax.set(xlim3d=(0, 1), xlabel='X')\n",
    "ax.set(ylim3d=(0, 1), ylabel='Y')\n",
    "ax.set(zlim3d=(0, 1), zlabel='Z')\n",
    "\n",
    "# Creating the Animation object\n",
    "ani = animation.FuncAnimation(\n",
    "    fig, update_lines, num_steps, fargs=(walks, lines), interval=100)\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}